package com.ruicar.afs.cloud.risk.api.service;


import com.ruicar.afs.cloud.risk.api.dto.tortoise.TortoiseResultNotice;
import com.ruicar.afs.cloud.risk.api.dto.tortoise.TortoiseQueryBean;
import com.ruicar.afs.cloud.risk.api.dto.tortoise.notice.*;
import com.ruicar.afs.cloud.risk.api.dto.tortoise.request.TortoiseFraudPushData;
import com.ruicar.afs.cloud.risk.api.dto.tortoise.request.TortoiseApplyData;
import com.ruicar.afs.cloud.risk.api.dto.tortoise.request.TortoisePrevApproveData;

/**
 * @Description 风控服务调用
 * @Author Peng Jinbo
 * @Date 2020/07/24 15:23
 */
public interface AfsRiskControlService {

    /**
     * Author Peng Jinbo
     * Signal apply string
     * 正式进件调用，返回当前调用记录编号
     *
     * @param applyData apply data
     * @return the string
     */
    String signalApply(TortoiseApplyData applyData);

    /**
     * Author Peng Jinbo
     * Signal fraud hand invoke string
     * 反欺诈手工调用
     *
     * @param applyData apply data
     * @return the string
     */
    String signalFraudHandInvoke(TortoiseApplyData applyData);

    /**
     * Author Peng Jinbo
     * Signal decision hand invoke string
     * 决策引擎手工调用
     *
     * @param applyData apply data
     * @return the string
     */
    String signalDecisionHandInvoke(TortoiseApplyData applyData);

    /**
     * Author Peng Jinbo
     * Signal prev approve string
     * 预审批调用
     *
     * @param prevApproveData prev approve data
     * @return the string
     */
    String signalPrevApprove(TortoisePrevApproveData prevApproveData);

    /**
     * Author Peng Jinbo
     * Signal fraud push string
     * 欺诈信息推送
     *
     * @param fraudPushData fraud push data
     * @return the string
     */
    String signalFraudPush(TortoiseFraudPushData fraudPushData);

    /**
     * Author Peng Jinbo
     * Query notice tortoise result notice
     * 结果查询，根据场景号判断
     *
     * @param queryBean query bean
     * @return the tortoise result notice
     */
    TortoiseResultNotice queryNotice(TortoiseQueryBean queryBean);

    /**
     * Author Peng Jinbo
     * Query apply notice tortoise result notice
     * 正式进件结果获取
     *
     * @param queryBean query bean
     * @return the tortoise result notice
     */
    TortoiseResultNotice<TortoiseApplyNoticeInfo> queryApplyNotice(TortoiseQueryBean queryBean);

    /**
     * Author Peng Jinbo
     * Query fraud hand invoke notice tortoise result notice
     * 反欺诈手工调用结果获取
     *
     * @param queryBean query bean
     * @return the tortoise result notice
     */
    TortoiseResultNotice<TortoiseHandFraudNoticeInfo> queryFraudHandInvokeNotice(TortoiseQueryBean queryBean);

    /**
     * Author Peng Jinbo
     * Query decision hand invoke notice tortoise result notice
     * 决策引擎手工调用获取
     *
     * @param queryBean query bean
     * @return the tortoise result notice
     */
    TortoiseResultNotice<TortoiseHandDecisionNoticeInfo> queryDecisionHandInvokeNotice(TortoiseQueryBean queryBean);

    /**
     * Author Peng Jinbo
     * Query prev approve notice tortoise result notice
     * 预审批、二手车预授信结果
     *
     * @param queryBean query bean
     * @return the tortoise result notice
     */
    TortoiseResultNotice<TortoisePrevApproveNoticeInfo> queryPrevApproveNotice(TortoiseQueryBean queryBean);

    /**
     * Author Peng Jinbo
     * Query fraud push notice tortoise result notice
     * 欺诈信息推送结果
     *
     * @param queryBean query bean
     * @return the tortoise result notice
     */
    TortoiseResultNotice<TortoiseFraudPushNoticeInfo> queryFraudPushNotice(TortoiseQueryBean queryBean);

}
